package com.knife.oauth.app.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.knife.oauth.api.controller.IamUserRegisterDto;
import com.knife.oauth.api.dto.ForgetPasswordDto;
import com.knife.oauth.domain.entity.IamUser;

/**
 * 用户service
 *
 * @author： 76875
 * @date： 2022/5/26 星期四 21:02
 * @description：
 * @modifiedBy：
 * @version: 1.0
 */
public interface IamUserService {

    /**
     * 修改密码
     *
     * @param password 密码
     */
    void changePassword(String password);


    /**
     * 查询用户
     *
     * @param iamUserPage 分页
     * @param iamUser     查询参数
     * @return 用户
     */
    Page<IamUser> selectIamUserPage(Page<IamUser> iamUserPage, IamUser iamUser);

    /**
     * 修改密码
     *
     * @param forgetPasswordDto 密码
     */
    void changePassword(ForgetPasswordDto forgetPasswordDto);


    /**
     * 注册用户
     *
     * @param iamUser 用户
     */
    void registerUser(IamUserRegisterDto iamUser);


    /**
     * 注册时，给指定邮箱发送验证码
     *
     * @param email 邮箱
     */
    void sendRegisterVerifyCode(String email);


    /**
     * 注册时，给指定邮箱发送验证码
     *
     * @param email      邮箱
     * @param verifyCode 验证码
     * @return 验证成功返回true
     */
    Boolean validateRegisterVerifyCode(String email, String verifyCode);


    /**
     * 忘记密码时，给指定邮箱发送验证码
     *
     * @param email 邮箱
     */
    void sendForgetVerifyCode(String email);


    /**
     * 忘记密码时，给指定邮箱发送验证码
     *
     * @param email      邮箱
     * @param verifyCode 验证码
     * @return 验证成功返回true
     */
    Boolean validateForgetVerifyCode(String email, String verifyCode);
}
